Python数据可视化~matplot默认配置修改(可解决中文、负号等显示问题)

您所在的位置:网站首页 matplot 中文 Python数据可视化~matplot默认配置修改(可解决中文、负号等显示问题)

Python数据可视化~matplot默认配置修改(可解决中文、负号等显示问题)

2022-05-06 09:29| 来源: 网络整理| 查看: 265

原文链接:http://www.juzicode.com/archives/2421

 

在matplotlib中默认是不能正常显示中文:

import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl if __name__ == '__main__': x = np.arange(-3,5) y = x*x*x plt.title("桔子code") plt.xlabel("x") plt.ylabel("y") plt.plot(x,y) plt.show()

运行后,title上的中文“桔子code”不能正常显示:

通常我们修改plt.rcParams属性,在画图前先设置中文字体,比如使用YouYuan(中文幼圆)字体:

if __name__ == '__main__': plt.rcParams['font.sans-serif'] = ['YouYuan'] x = np.arange(-3,5) y = x*x*x plt.title("桔子code") plt.xlabel("x") plt.ylabel("y") plt.plot(x,y) plt.show()

运行之后发现中文字体正常了,但是负号显示不出来:

负号显示异常的问题也可以在画图前配置axes.unicode_minus为False解决。

plt.rcParams['font.sans-serif'] = ['YouYuan'] plt.rcParams['axes.unicode_minus'] = False

 

除了上述的配置方法,还可以使用pyplot.rc()方法修改配置:plt.rc(‘font’,family=’Youyuan’,size=’15’)、plt.rc(‘axes’,unicode_minus=’False’)

前面的代码可以修改成这样:

print('\n-----欢迎来到juzicode.com') print('-----公众号: 桔子code/juzicode \n') import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl if __name__ == '__main__': plt.rc('font',family='Youyuan',size='15') plt.rc('axes',unicode_minus='False') x = np.arange(-3,5) y = x*x*x plt.title("桔子code") plt.xlabel("x") plt.ylabel("y") plt.plot(x,y) plt.show()

利用pyplot.rc()方法可以进一步修改更多的配置项

首先利用matplotlib.matplotlib_fname()找到默认的配置的说明文件:

>>> import matplotlib >>> matplotlib.matplotlib_fname() 'D:\\Python\\Python38\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

打开配置说明文件matplotlibrc,比如说要修改字体,查找font.family,可以找到字体相关的默认配置,默认使用的字体是sans-serif,大小是10.0:

可以这样修改:plt.rc()方法的第1个入参为‘font’,比如说要修改font.size,传入入参size=‘15’,如果要修改font.family,传入入参family=’YouYuan’,注意要用字符串形式。

plt.rc('font',family='YouYuan',size='15')

继续看下unicode_minus的配置,在matplotlibrc找到该配置:

plt.rc()方法的第1个入参为‘axes’, 入参unicode_minus =’False’就能正常显示负号。

plt.rc('axes',unicode_minus='False')

继续看下axes的其他参数,比如修改边框的线宽axes.linewidth=‘5.0’,显示图片中的grid=‘True’:

print('\n-----欢迎来到juzicode.com') print('-----公众号: 桔子code/juzicode \n') import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl if __name__ == '__main__': plt.rc('font',family='Youyuan',size='15') plt.rc('axes',unicode_minus='False') plt.rc('axes',linewidth='5.0',grid='True') x = np.arange(-3,5) y = x*x*x plt.title("桔子code") plt.xlabel("x") plt.ylabel("y") plt.plot(x,y) plt.show()

下图右侧是增大边框宽度和添加grid后的效果:

如果要修改这种多层配置项:

#xtick.major.size: 3.5 # major tick size in points #xtick.minor.size: 2 # minor tick size in points

可以这样修改:

plt.rc('xtick.major',width='5',size='12')


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3